let newJson = {
    frame: {
        showTitle: "boolean,是否显示标题",
        "title": "String,标题内容",
        "titleAlign": "String,标题对齐方式",
        "subTitle": "String,子标题",
        "resizeAble": "boolean,是否可缩放",
        "dragAble": "boolean,是否可拖动",
        "maxMinAble": "boolean,是否可以调整最大最小",
        "printAble": "boolean,是否可打印",
        "fullScreen": "boolean,是否可全屏",
        "helpDocument": "String,帮助文档、填表说明",
        helpDocumentWinWidth: "帮助文档窗口的宽度",
        printSetting: {
            "pageSize": "string，A4、B5、自定义",
            "pageHeight": "string,页面高度",
            "pageWidth": "string, 页面宽度 ",
            "pageDirection": "string,页面方向、V:纵向、H:横向",
            "reportISO": "string,表单ISO编码",
            "companyCode": "string,医院编码",
            "companyName": "String,医院名称",
            removeRows: 0,    //打印当前窗口的时候，需要去除前 removeRows 行数据。默认0
            carryWinno: [
                {
                    winno: "1",  //需要额外拼接的窗口号   从已经存在的窗口配置中选择。如果这个WinNo和当前窗口的winNo相等，则只使用 startRows 和 endRows 进行数据填充
                    subReportName: "", //子报表的名称，用于打印时向子报表中赋值使用
                    startRows: "",   //填充的数据从 startRows 行开始
                    endRows: ""    //填充的数据到 endRows 行结束
                }
            ],   //当前表单打印时需要额外拼接的窗口配置    按照顺序拼接打印


        }
    },
    "winno": "String,窗口号",
    "beforeLoadProc": "String,窗口加载前执行处理",
    "companyCode": "String,公司医院代码，用于区分不同的公司和医院",
    "arrange": {
        "minHeight": "String,当前窗口的最小高度，eg:500px",
        "height": "String,窗口的高度，为0时默认默认默认占满",
        "arrangeRows": "String,当前窗口划分为几行",
        "arrangeCols": "String,当前窗口划分为几列"
    },
    "funcDefs": [
        {
            masterRecordTableName: "String,记录保存到哪张主表，后续会从对照表中获取定义，默认值 docs_report_rec ，详细对照见 comm_sys_report_type_dict",
            childRecordTableName: "String,记录保存到哪张子表，后续会从对照表中获取定义，默认值 docs_report_detail，详细对照见 comm_sys_report_type_dict",
            rowSpan: "String,当前功能模块占用窗口定义中的几行",
            colSpan: "String,当前功能模块占用窗口定义中的几列",
            funcNo: "String,当前功能模块的编号",
            pagination: true,     //当前页面的数据查询时是否分页
            funcLayout: "",      //布局方式  数据从字典获取 commCode 为：funcLayoutDict
            showIndex: "String,功能模块的加载顺序",
            funcHeight: "可以为  500px 的固定高度，或者 30% 的相对高度, 未定义则剩余空间均分",
            frame: {   //布局框架，暂时觉得可以共用
                "showTitle": true,
                "title": "新生儿出生记录单",
                "titleAlign": "center",
                "subTitle": null,
                "resizeAble": true,
                "dragAble": true,
                "maxMinAble": true,
                "printAble": true,
                "fullScreen": true,
                "helpDocument": "<p><b>护理措施：</b><br/>\n1.饮食指导<br/>\n2.预防感染<br/>\n3.遵医嘱处理<br/>\n4.其它</p >\n\n<p><b>评估对象：</b><br/>\n年龄18岁~90岁成年住院患者，住院时间小于48小时的日间住院患者除外</p >\n\n<p><b>评估要求：</b><br/>\n1.评估时机：对适用患者在入院后24h内进行首次临床营养风险筛查，病情变化及时评估。<br/>\n2. 评估总分≤3分：每月复评，有变化及时评估。<br/>\n3.评估总分≥3分：即有营养风险，应每周复评，有变化及时评估，结合患者临床状况，予以饮食营养支持宣教，必要时建议医师采取营养支持\n并及时记录落实相应措施。</p >",
                "printSetting": null
            },
            "thirdPartyPostBack": " 第三方接口回写对象，暂未确定 ",
            returnParams: [  // 当前窗口弹出之后需要返回的值
                {
                    expression: A + B + C,  //返回字段的表达式
                    field: E    //返回值对应的 key
                },
                {
                    expression: D,
                    field: D
                }
            ],
            // customSql: [
            //     {
            //         sqlId: "前端生成的GUID，用于前端发送请求时查询数据的唯一ID",
            //         sqlExpression: "SQL语句",
            //         sqlName: "SQL语句的名称、备注，说明当前语句的作用",
            //         //params: ['#useUserStore.patient.inpNo#', '#useUserStore.patient.bedNo#','#date#']
            //         sqlParams: [
            //             {
            //                 argName: "#useUserStore.patient.inpNo#",
            //                 argType: "String" //暂时不用，以后可能会用。默认为 String
            //             }
            //         ]
            //     }
            // ],
            customDBStatement: [
                {
                    statementId: "前端生成的GUID",
                    statement: "SQL语句、存储过程、函数，使用 ## 包裹变量",
                    statementType: "sql:sql表达式、以SQL的方式执行；function：函数，以函数的方式执行；procedure：存储过程：以存储过程的方式执行；api：后端接口",
                    statementName: "语句的设计器前端展示名称，可以用来存放备注",
                    dataSourceKey:"",  //数据源  ，下拉框 字典表获取   CommCode  externalDbDict
                    inArgs: [{
                        argName: "p_inoNo",    //存储过程或者函数中定义的入参名称
                        argValue: "useUserStore.patient.inpNo",  //需要前端替换取值的表达式
                        argType: "String" //暂时不用，以后可能会用。默认为 String
                    }],
                    outArgs: [{
                        argName: "inpNo",   //返回给前端的名称
                        argValue: "P_INPNO",  //SQL、函数或者存储过程返回的结果
                        argType: "String" //暂时不用，以后可能会用。默认为 String
                    }]
                }
            ],
            gridDef: {
                toolBar: [  //表格上方对应的时间条件框  搜索框
                    {
                        "position": "String 位置  left:左  right:右",
                        "controlName": "String 控件名称   datePickers:时间选择框  searchBox:搜索框",
                        "defaultValue": "String,默认值 -1：从住院时起 1：从昨天起  3：从三天前起  7：从七天前起",
                        //"注释": "时间过滤框和搜索栏的定义 ，datePickers 可设置默认值，searchBox暂不可设置，  默认值用于渲染时开始时间的渲染，结束时间保持当前时间 "
                    }
                ],
                btnBar: {  //表格和表单上会对应不同的按钮
                    topBtns: [
                        {
                            "btnId": "String,按钮的ID",
                            "showName": "String,按钮的展示名称",
                            "width": "String,按钮展示的宽度，默认为null,统一宽度，不做处理",
                            "height": "String,按钮展示的高度，默认为null,统一高度，不做处理",
                            "ord": "String,按钮展示的顺序，当有多个按钮的时候，按照这个顺序进行加载展示",
                            "beforeClick": "String,按钮加载前执行的一些事件，定义时大概率需要编写代码，所以应该暂时不会允许定义",
                            "afterClick": "String,同beforeClick",
                            //"winNo": "String,按钮执行功能对应的窗口号，如加载哪个窗口的数据、保存数据到哪个窗口等等",  在同一个  JSON 中不需要指定跳转窗口
                            //"funcNo": "String,按钮执行功能对应的功能号",
                            "btnType": "String,按钮的类型，通用类型",
                            "btnRoles": "String,角色代码，英文逗号隔开，哪些角色可以看见或者点击这个按钮",
                            "callProc": "boolean,是否执行存储过程",
                            "proc": "String,执行的存储过程，eg:sqlId:#arg1#,#arg2#...",
                            "icon": "string,按钮的图标",
                            "customData": "按钮上的自定义参数"
                        }
                    ],
                    inBtns: [],
                    bottomBtns: []
                },

                gridFieldDef: [  //表格的字段定义
                    {
                        tableHeight: null, //高
                        tableWidth: "110px", //宽
                        columnTitle: "日期", //显示名
                        fieldName: "date",//key
                        hover: null,  //鼠标悬停提示信息
                        fixed: true,  //固定列、冻结列
                        dynamicColumn: false,  // 是否动态列/动态表头  true：进行动态列处理，false：不进行处理
                        defaultPrintColumns: 8,   //默认打印的列数，数量不满时需要使用空白填充。仅针对动态列
                        textAlign: "center", //对齐方式
                        printAble: true, //是否打印
                        children: [
                            {
                                tableHeight: null, //高
                                tableWidth: "110px", //宽
                                columnTitle: "日期", //显示名
                                fieldName: "date",//key
                                hover: null,  //鼠标悬停提示信息
                                fixed: true,  //固定列、冻结列
                                textAlign: "center", //对齐方式
                                printAble: true, //是否打印
                                children: null
                            }
                        ]
                    }
                ]
            },
            formDef: {  //表单定义

                toolBar: [  //表单有可能会有工具栏、搜索框  且和表格的不同
                    {
                        position: "String 位置  left:左  right:右",
                        controlName: "String 控件名称   datePickers:时间选择框  searchBox:搜索框",
                        defaultValue: "String,默认值 -1：从住院时起 1：从昨天起  3：从三天前起  7：从七天前起",
                        //"注释": "时间过滤框和搜索栏的定义 ，datePickers 可设置默认值，searchBox暂不可设置，  默认值用于渲染时开始时间的渲染，结束时间保持当前时间 "
                    }
                ],

                btnBar: {  //表格和表单的按钮栏不同  需要分别设置
                    topBtns: [
                        {
                            "btnId": "String,按钮的ID",
                            "showName": "String,按钮的展示名称",
                            "width": "String,按钮展示的宽度，默认为null,统一宽度，不做处理",
                            "height": "String,按钮展示的高度，默认为null,统一高度，不做处理",
                            "ord": "String,按钮展示的顺序，当有多个按钮的时候，按照这个顺序进行加载展示",
                            "beforeClick": "String,按钮加载前执行的一些事件，定义时大概率需要编写代码，所以应该暂时不会允许定义",
                            "afterClick": "String,同beforeClick",
                            // "winNo": "String,按钮执行功能对应的窗口号，如加载哪个窗口的数据、保存数据到哪个窗口等等",    同一个窗口中不需要定义
                            //"funcNo": "String,按钮执行功能对应的功能号",                                          同一个窗口中不需要定义
                            "btnType": "String,按钮的类型，通用类型",
                            "btnRoles": "String,角色代码，英文逗号隔开，哪些角色可以看见或者点击这个按钮",
                            "callProc": "boolean,是否执行存储过程",
                            "proc": "String,执行的存储过程，eg:sqlId:#arg1#,#arg2#...",
                            "icon": "string,按钮的图标"
                        }
                    ],
                    inBtns: [],
                    bottomBtns: []
                },
                // range: {  护理单内部 使用栅格布局，不需要定义划分行列
                //     "arrangeRows": "String,当前模块划分成多少行",
                //     "arrangeCols": "String,当前模块划分成多少列"
                // },

                "formFieldDefs": [
                    {
                        "syncData": [
                            {
                                mainTableName: "String 主表表名 详细对照见 comm_sys_report_type_dict ，实际同步到哪张数据库实际存在的主表 ",
                                subTableName: "String,子表表名，详细对照见 comm_sys_report_type_dict，实际同步到哪张数据库实际存在的子表",
                                reportId: "String ,报表编号，同步到哪张逻辑报表",
                                fieldName: "String,同步到哪个字段上"
                            }
                        ],
                        changeEvent: [
                            {
                                type: "String,字段的变动事件类型，valueChange：值变动；doubleClick：双击；keyboardEvent:键盘事件；valueChange-U:(Uninterrupted) 不间断的，初始化时也执行，valueChange在初始化时不执行",
                                condition: [
                                    {
                                        fieldName: "string,字段的fieldName，标明使用哪个字段的值进行判断，如果为空则是当前字段",
                                        value: [
                                            "String,范围值 数组"
                                        ],
                                        comparisonType: "String,比较符：equal、notEqual、greaterThen、lessThen、greaterThanOrEqual、lessThanOrEqual",
                                        linkType: "String,连接类型：or  and "
                                    }
                                ],
                                actions: [
                                    {
                                        "注释": "表格的最后一行作为可编辑状态  影响类型下拉框 对应name， 被影响单元：对应 refreshField（当选择 只读控制和 可见控制）、refreshFunc（当选择 刷新护理单 ）、jumpWinNo （跳转护理单） 直接下拉框选择，选择之后把对应的值放到下面 ",
                                        name: "String,执行的操作类型：readOnlyCtrl:只读控制、visibleCtrl:可见控制、refreshFuncCtrl:刷新护理单、jumpWinCtrl:跳转护理单、updateValue:更新字段值...",
                                        refreshField: [],
                                        refreshFunc:
                                            {
                                                funcNo: "String 护理单号",
                                                //"注释 形式1": "mainArgs 和 detailArgs 都是作为护理单查询数据时的额外条件，下拉框选择。可以放在一个选择框中（存到json中时要区分main/detail），可以放在两个选择框中(但是只能选择一项)。可以为空，不为空时，只能选择一个字段",
                                                //"mainArgs": "String, 映射主表哪个字段   护理单记录日期：record_date ;  护理单记录时间：record_time ",
                                                //"detailArgs": "String,  映射子表哪个字段  根据上面选择的 funcNo 护理单号，从字典( 应该每次设计出一张护理单后，保存时自动把当前护理单的funcNo,护理单名、设计的字段 key/key中文等信息存到一张表里，作为字典)中给出字段的  key/key中文 选项",
                                                "注释 ": "存储形式的差别，要求同上，只能选择一个字段",
                                                type: "main/sub",
                                                mappingFieldName: "record_date"
                                            },
                                        jumpWinNo: "String,这个字段的变动事件是满足条件的时候，跳转的窗口号",
                                        openAs: "table:以表格展示，form：以表单展示",
                                        changeTo: "" //字段的值变为

                                    }
                                ]
                            }
                        ],
                        "rowSpan": "String，这个字段占功能模块划分中的几行",
                        "colSpan": "String，这个字段占功能模块划分中的几列",
                        "label": "String  控件的label ",
                        "defaultValue": "String  固定默认值",
                        "preSuffix": "String,控件的前缀 eg:母姓名：",
                        "afterSuffix": "String,字段的后缀，eg:cm²",
                        "fieldType": "String，字段的类型，详见 comm_sys_base_field_type ",
                        "fieldName": "String，字段的key,  motherName",
                        "customComponentConfigArg": "String,自定义组件配置参数",
                        "mainFieldMapping": "用于表单字段映射主表字段做过滤条件    如表单中的字段需要映射为主表中的 date、time  或者 dateTime  date:映射主表日期 time:映射主表时间 dateTime：主表日期时间",
                        "additionalFlag": "string,项目值附加的标记 体温:temperature ; 脉搏:pulse ; 呼吸:breath   带有这些标记的字段值在进行数据库操作时会进行拆分处理 ",
                        "attrTag": "string,项目属性标识  总分项目:totalScore; 出量项目:C ;入量项目:R ; 普通项目:N ",
                        rules: {
                            "regularExpression": "String,正则表达式",
                            "failurePrompt": "String,校验失败的提示",
                            "注释": "additionalFlag字段设置的时候  默认添加正则表达式和失败提示信息如下, 依次为 体温 呼吸  脉搏  ",
                            "^(3([4-9])|4([0-3]))(\\.|(\\.[0-9]))?(Y|G|K|E|y|g|k|e)?$": "34~43的单位为(°C)的数字",
                            "^([0-9]|\\d{0}|1[0-9]|\\d{1}|1[0-1][0-9]|\\d{2}|120)(R|r)?$": "0~120的单位为(次/分)的数字",
                            "^([0-9]|\\d{0}|1[0-9]|\\d{1}|1[0-9][0-9]|\\d{2}|200)(P|p)?$": "0~200的单位为(次/分)的数字"
                        },
                        showCtrl: "", //展示控制，为兼容以前表单设置  当为空时，不做任何处理，新增和修改都可以展示  当为 1 时，只在新增界面展示；当为2时，只在修改界面展示
                        notLoadLastRecord: "加载上一次数据时，当前字段不加载上一次的数据，如果为 true 就不加载，为 false 就加载",
                        otherNonGenericAttributes: "用于存放一些只有部分字段会使用到的属性，如滑块中使用到的 stepSize、min、max 等其它属性，该部分属性后端不做解析",
                        /**
                         * 滑块使用：stepSize、min、max
                         * 日期组件使用：dateFormat:
                         */
                        roleCtrl: {
                            deptType: ""
                        },
                        "multiLines": "boolean,是否多行处理",
                        "multiCarryFields": [
                            "当前字段需要携带的字段，用于多行处理时调用组件传递参数使用，从当前已经定义的字段的fieldName中选择"
                        ],
                        "bindingData": {
                            "注释": "字段的绑定数据   字典 SELECT comm_code,comm_name FROM Sys_Comm_Dict  ",
                            wrapDisplay: true,   //控制单选、多选等选项的换行展示  true：换行  false：不换行
                            "dataSource": "String,数据来源的类型：xCodeMap、dynamicSql、static(下面option 中的数据，在定义字段的时候填写，固定值)、thirdParty:夏军认为不需要，暂时不写",
                            "requestArgs": [
                                "#arg1#",
                                "#arg2#"
                            ],
                            "option": [
                                {
                                    "value": "String,选项对应的值",
                                    "label": "String,选项展示的名称",
                                    "fieldName": "String,选项对应的字段，多选中会出现字段不同的情况",
                                    "children": [
                                        {
                                            "value": "String,选项对应的值",
                                            "label": "String,选项展示的名称",
                                            "fieldName": "String,选项对应的字段，多选中会出现字段不同的情况",
                                            "children": [
                                                "级联选择框使用"
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        "hover": "String,鼠标悬停提示  请输入母亲姓名",
                        "readOnly": "boolean,是否只读",
                        "visible": "boolean,字段是否可见",
                        "searchAble": "boolean,是否可搜索",
                        "fieldId": "String，字段的唯一ID",
                        "required": "boolean,字段是否必填",
                        "textAlign": "String,输入框中文本的对齐方式， left：居左  center：居中 right：居右",
                        "leftMargin": "String，字段的左边距",
                        "rightMargin": "String,字段的右边距，处理表单中两个字段有间距的情况",
                        "tableShow": "boolean,是否以表格的形式展示",
                        "printAble": "boolean,是否打印",
                        groupId: "字段分组编号",
                        "calculatedFields": "String，计算字段,fieldName和 +  间隔  field1+field2+field3",
                        "initializedExpressions": {
                            "dataSource": "String, front",
                            "requestArgs": [
                                "String, 参数列表 前端参数、SQL语句 "
                            ],
                            "thirdPartPull": {
                                "拉取第三方数据": "暂未确定"
                            },
                            "expression": "String,初始化表达式    {#weight#}/({#height#}*{#height#})   #LASTROW.deptName#===?#UC.dept.deptName#:#LASTROW.deptName#,  ",
                            "range": [
                                {
                                    "注释": ">= min , < max",
                                    "min": 25,
                                    "max": 60,
                                    "result": "1"
                                }
                            ]
                        },
                        "children": null
                    }
                ]
            }


        }
    ]
}


